<?php

    /**
     * Clase que define en su constructor la conexion con la base de 
     * datos utilizada
     */
    class DB extends mysqli {
        public function __construct() {
            $host = "127.0.0.1";
            $usuario = "root";
            $senha = "root";
            $bd = "crm_casino";
            
            parent::__construct($host, $usuario, $senha, $bd);

            if (mysqli_connect_error()) {
                die('Error de Conexión a MySQL (' . mysqli_connect_errno() . ') '
                        . mysqli_connect_error());
            }
        }
    }
       
    
    /**
     * Realiza las consultas a la Base de datos y devuelve un array con los
     * resultados obtenidos, si no obtuvo nada, retorna false
     * @param type $query
     * @return type
     */
    function consultar($query) {
        //echo "Consulta ---> $query </br>";
        $respuesta = false;
        if($query!=null && sizeof($query) > 0) {
            $db = new DB();
            if($db) {
                $list = $db->query($query);
                if ($list) {
                    $respuesta = toArray($list);
                    $list->free();
                    $db->close();
                }
            } else {
                die("ERROR: No se pudo conectar a la Base de Datos");
            }            
        } else {
            die("ERROR: No se recibio el parámetro consulta!!! ");
        }
        return $respuesta;
    }
    
    
    /**
     * Ejecuta una sentencia SQL en la base de datos
     * INSERT, UPDATE or DELETE
     * @param type $query
     * @return boolean
     */
    function ejecutar($query) {
        //echo "Ejecturar</br>";
        //echo "Query ---> $query </br>";
        $respuesta = false;
        if($query!=null && sizeof($query) > 0) {
            $db = new DB();
            if($db) {
                $sentencia = $db->prepare($query);
                $respuesta = $sentencia->execute();
                if(!$respuesta) {
                    die("No se pudo ejecutar la consulta:</br>".$sentencia->error);
                } else {
                    $respuesta = $sentencia->insert_id;
                    if(!$respuesta) {
                        $respuesta = true;
                    }
                }
                
                $sentencia->close();
                $db->close();
            } else {
                die("ERROR: No se pudo conectar a la Base de Datos");
            }            
        } else {
            die("ERROR: No se recibio el parámetro consulta!!! ");
        }
        return $respuesta;
    }

    
    
    /**
     * Ejecuta sentencias multiples SQL en la base de datos
     * INSERT, UPDATE or DELETE
     * @param type $query
     * @return boolean
     */
    function multiQuery($query) {
        //echo "MultiQuery ---> $query </br>";
        $respuesta = false;
        if($query!=null && sizeof($query) > 0) {
            $db = new DB();
            if($db) {
                $respuesta = $db->multi_query($query);
                if(!$respuesta) {
                    die("No se pudo ejecutar la consulta");
                }
                $db->close();
            } else {
                die("ERROR: No se pudo conectar a la Base de Datos");
            }            
        } else {
            die("ERROR: No se recibio el parámetro consulta!!! ");
        }
        return $respuesta;
    }

    
    
    /**
     * Devuelve el resultado de una consulta como un array en memoria que ya 
     * no necesita una conexion a la bd para existir
     * @param type $listado
     * @return type
     */
    function toArray($listado) {
        $respuesta = false;
        if($listado) {
            $respuesta = array();
            while($row = $listado->fetch_array()) {
                $respuesta[] = $row;
            }
        }
        return $respuesta;
    }
    
    
?>
